const path = require("path");
const HtmlWebpackPlugin = require("html-webpack-plugin");
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const resolve = require("@rollup/plugin-node-resolve").resolve;

// const TerserPlugin = require('terser-webpack-plugin');
// const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
// const fs = require('fs');
// const os = require('os');
// const env = process.env;
// const isProd = env.NODE_ENV === 'production';
// const isWin = os.platform() === 'win32';
// const isMac = os.platform() === 'darwin';
// const isLinux = os.platform() === 'linux';
// const isAnalyzerEnabled = env['ANALYZE'] === 'true';
module.exports = {
  stats: "errors-only",
  entry: "./src/index.js", // 入口文件路径
  output: {
    filename: "bundle.js", // 输出文件名
    path: path.resolve(__dirname, "dist"), // 输出文件路径
  },
  module: {
    rules: [
      {
        test: /\.js$/, // 只对 js 文件进行处理
        exclude: /node_modules/, // 排除 node_modules 目录中的模块
        use: {
          loader: "babel-loader", // 使用 babel-loader 对 js 文件进行转换
        },
      },
      {
        test: /\.css$/, // 只对 css 文件进行处理
        use: [MiniCssExtractPlugin.loader, "css-loader"], // 使用 MiniCssExtractPlugin 和 css-loader 对 css 文件进行处理
      },
      {
        test: /\.(png|svg|jpg|gif)$/, // 只对 png、svg、jpg、gif 等图片文件进行处理
        use: ["file-loader"], // 直接将图片文件输出到指定目录中
      },
    ],
  },
  plugins: [
    new HtmlWebpackPlugin({
      // 将打包后的 index.html 直接复制到输出目录中
      title: "My App",
      filename: "index.html",
      template: "./index.html",
    }),
    new MiniCssExtractPlugin({
      // 将 css 从打包文件中分离出来，方便后续引用
      filename: "[name].css",
      chunkFilename: "[id].css",
    }),
  ],
  resolve: {
    fallback: {
      path: require.resolve("path-browserify"),
      url: require.resolve("url"),
      util: require.resolve("util"),
      stream: require.resolve("stream-browserify"),
      buffer: require.resolve("buffer"),
    },
  },
  devServer: {
    contentBase: path.join(__dirname, "dist"), // 在本地开发时使用的根目录
    port: 8080, // 在本地开发时使用的端口号
  },
};
